<!DOCTYPE html>
<html>
<head><meta name="generator" content="Hexo 3.9.0">
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    
    <title>
        Java 修饰符 |
        
        Darklovy</title>
    <meta name="description" content>
    <meta name="keywords" content>
    <meta name="HandheldFriendly" content="True">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <link rel="shortcut icon" href="/">
    <link rel="alternate" href="/atom.xml" title="Darklovy">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="description" content="Java 语言提供了很多修饰符，主要分为以下两类：  访问修饰符 非访问修饰符  访问修饰符在 Java 中有以下四种访问修饰符。  public protected default private  public - 公有访问修饰符被声明为 public 的类、方法、构造方法和接口能够被任何其他类访问。 如果几个相互访问的 public 类分布在不同的包中，则需要导入相应 public 类所在的">
<meta name="keywords" content="Java">
<meta property="og:type" content="article">
<meta property="og:title" content="Java 修饰符">
<meta property="og:url" content="https://www.ttxxly.top/2019/01/01/Java-修饰符/index.html">
<meta property="og:site_name" content="Darklovy">
<meta property="og:description" content="Java 语言提供了很多修饰符，主要分为以下两类：  访问修饰符 非访问修饰符  访问修饰符在 Java 中有以下四种访问修饰符。  public protected default private  public - 公有访问修饰符被声明为 public 的类、方法、构造方法和接口能够被任何其他类访问。 如果几个相互访问的 public 类分布在不同的包中，则需要导入相应 public 类所在的">
<meta property="og:locale" content="en">
<meta property="og:updated_time" content="2019-01-08T07:15:41.253Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Java 修饰符">
<meta name="twitter:description" content="Java 语言提供了很多修饰符，主要分为以下两类：  访问修饰符 非访问修饰符  访问修饰符在 Java 中有以下四种访问修饰符。  public protected default private  public - 公有访问修饰符被声明为 public 的类、方法、构造方法和接口能够被任何其他类访问。 如果几个相互访问的 public 类分布在不同的包中，则需要导入相应 public 类所在的">

    <link href="https://fonts.googleapis.com/css?family=Inconsolata|Titillium+Web" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css?family=Roboto+Mono" rel="stylesheet">
    <link href="//cdn.bootcss.com/node-waves/0.7.5/waves.min.css" rel="stylesheet">
    <link rel="stylesheet" href="/style.css">
    <script>
        function setLoadingBarProgress(num) {
            document.getElementById('loading-bar').style.width = num + "%";
        }
    </script>
</head>
</html>
<body>
  <div id="loading-bar-wrapper">
  <div id="loading-bar"></div>
</div>


  <script>setLoadingBarProgress(20)</script> 
  <header class="l_header">
	<div class='wrapper'>
		<div class="nav-main container container--flex">
			<a class="logo flat-box" href='/' >
				Darklovy
			</a>
			<div class='menu'>
				<ul class='h-list'>
					
						<li>
							<a class='flat-box nav-Home' href='/'>
								首页
							</a>
						</li>
					
						<li>
							<a class='flat-box nav-archives' href='/archives'>
								归档
							</a>
						</li>
					
						<li>
							<a class='flat-box nav-categories' href='/categories'>
								分类
							</a>
						</li>
					
						<li>
							<a class='flat-box nav-tags' href='/tags'>
								标签
							</a>
						</li>
					
						<li>
							<a class='flat-box nav-algorithm' href='https://book.algorithm.ttxxly.top/'>
								算法
							</a>
						</li>
					
						<li>
							<a class='flat-box nav-python' href='https://book.python.ttxxly.top/'>
								python
							</a>
						</li>
					
						<li>
							<a class='flat-box nav-about' href='/about'>
								关于
							</a>
						</li>
					
				</ul>
				<div class='underline'></div>
			</div>
			
				<div class="m_search">
					<form name="searchform" class="form u-search-form">
						<input type="text" class="input u-search-input" placeholder="Search" />
						<span class="icon icon-search"></span>
					</form>
				</div>
			
			<ul class='switcher h-list'>
				
					<li class='s-search'><a href='javascript:void(0)'><span class="icon icon-search flat-box"></span></a></li>
				
				<li class='s-menu'><a href='javascript:void(0)'><span class="icon icon-menu flat-box"></span></a></li>
			</ul>
		</div>
		
		<div class='nav-sub container container--flex'>
			<a class="logo" class="flat-box" href='javascript:void(0)'>
				Word of Forks
			</a>

			<ul class='switcher h-list'>
				<li class='s-comment'><a href='javascript:void(0)'><span class="icon icon-chat_bubble_outline flat-box"></span></a></li>
				<li class='s-top'><a href='javascript:void(0)'><span class="icon icon-arrow_upward flat-box"></span></a></li>
				<li class='s-toc'><a href='javascript:void(0)'><span class="icon icon-format_list_numbered flat-box"></span></a></li>
			</ul>
		</div>
	</div>
</header>
<aside class="menu-phone">
	<nav>
		
			<a href="/" class="nav-Home nav">
				首页
			</a>
		
			<a href="/archives" class="nav-archives nav">
				归档
			</a>
		
			<a href="/categories" class="nav-categories nav">
				分类
			</a>
		
			<a href="/tags" class="nav-tags nav">
				标签
			</a>
		
			<a href="https://book.algorithm.ttxxly.top/" class="nav-algorithm nav">
				算法
			</a>
		
			<a href="https://book.python.ttxxly.top/" class="nav-python nav">
				python
			</a>
		
			<a href="/about" class="nav-about nav">
				关于
			</a>
		
	</nav>
</aside>

    <script>setLoadingBarProgress(40);</script>
  <div class="l_body">
    <div class='container clearfix'>
      <div class='l_main'>
        <article id="post-Java-修饰符"
  class="post white-box article-type-post"
  itemscope itemprop="blogPost">
	<section class='meta'>
	<h2 class="title">
  	<a href="/2019/01/01/Java-修饰符/">
    	Java 修饰符
    </a>
  </h2>
	<time>
	  Jan 1, 2019
	</time>
	
	</section>
	
		<section class="toc-wrapper"><ol class="toc"><li class="toc-item toc-level-3"><a class="toc-link" href="#访问修饰符"><span class="toc-number">1.</span> <span class="toc-text">访问修饰符</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#public-公有访问修饰符"><span class="toc-number">1.1.</span> <span class="toc-text">public - 公有访问修饰符</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#protected-受保护的访问修饰符"><span class="toc-number">1.2.</span> <span class="toc-text">protected - 受保护的访问修饰符</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#默认访问修饰符-不使用关键字"><span class="toc-number">1.3.</span> <span class="toc-text">默认访问修饰符 - 不使用关键字</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#private-私有访问修饰符"><span class="toc-number">1.4.</span> <span class="toc-text">private - 私有访问修饰符</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#访问控制和继承"><span class="toc-number">1.5.</span> <span class="toc-text">访问控制和继承</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#非访问修饰符"><span class="toc-number">2.</span> <span class="toc-text">非访问修饰符</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#static-修饰符"><span class="toc-number">2.1.</span> <span class="toc-text">static 修饰符</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#final-修饰符"><span class="toc-number">2.2.</span> <span class="toc-text">final 修饰符</span></a></li></ol></li></ol></section>
	
	<section class="article typo">
  	<div class="article-entry" itemprop="articleBody">
    	<p>Java 语言提供了很多修饰符，主要分为以下两类：</p>
<ul>
<li>访问修饰符</li>
<li>非访问修饰符</li>
</ul>
<h3 id="访问修饰符"><a href="#访问修饰符" class="headerlink" title="访问修饰符"></a>访问修饰符</h3><p>在 Java 中有以下四种访问修饰符。</p>
<ul>
<li><code>public</code></li>
<li><code>protected</code></li>
<li><code>default</code></li>
<li><code>private</code></li>
</ul>
<h4 id="public-公有访问修饰符"><a href="#public-公有访问修饰符" class="headerlink" title="public - 公有访问修饰符"></a><code>public</code> - 公有访问修饰符</h4><p>被声明为 public 的类、方法、构造方法和接口能够被任何其他类访问。</p>
<p>如果几个相互访问的 public 类分布在不同的包中，则需要导入相应 public 类所在的包。</p>
<p>由于类的继承性，类所有的公有方法和变量都能被其子类继承。</p>
<p>以下函数使用了公有访问控制：</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] arguments)</span> </span>&#123;</span><br><span class="line"><span class="comment">// ... </span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<p>java 程序的 <code>main()</code> 方法必须设置成公有的，否则 java 解释器将不能运行该类。</p>
<h4 id="protected-受保护的访问修饰符"><a href="#protected-受保护的访问修饰符" class="headerlink" title="protected - 受保护的访问修饰符"></a><code>protected</code> - 受保护的访问修饰符</h4><p><code>protected</code> 需要从以下两个点来分析说明</p>
<ul>
<li><p>子类与基类在同一包中：被声明为 <code>protected</code> 的变量、方法和构造器能被同一个包中的任何其他类访问。</p>
</li>
<li><p>子类与基类不在同一包中：子类实例可以访问其从基类继承而来的 <code>protected</code> 方法，而不能访问基类实例的 <code>protected</code> 方法。</p>
</li>
</ul>
<p><code>protected</code> 可以修饰数据成员、构造方法、方法成员，<strong>不能修饰类（内部类除外）</strong></p>
<p><strong>接口以及接口的成员变量和成员方法不能声明为 <code>protected</code></strong></p>
<h4 id="默认访问修饰符-不使用关键字"><a href="#默认访问修饰符-不使用关键字" class="headerlink" title="默认访问修饰符 - 不使用关键字"></a>默认访问修饰符 - 不使用关键字</h4><p>使用默认访问修饰符声明的变量和方法，对同一个包的类是可见的。</p>
<p>接口里的变量都隐式声明为 <code>public static final</code> ，而接口里的方法默认情况下访问权限为 <code>public</code>.</p>
<h4 id="private-私有访问修饰符"><a href="#private-私有访问修饰符" class="headerlink" title="private - 私有访问修饰符"></a><code>private</code> - 私有访问修饰符</h4><p>私有访问修饰符是最严格的访问级别，被声明为 private 的方法、变量和构造方法只能被所属类访问，并且类和接口不能声明为 private。</p>
<p>声明为私有访问类型的变量只能通过类中公共的 getter 方法被外部类访问。</p>
<p>Private 访问修饰符的使用主要用来隐藏类的实现细节和保护类的数据。</p>
<h4 id="访问控制和继承"><a href="#访问控制和继承" class="headerlink" title="访问控制和继承"></a>访问控制和继承</h4><p>方法继承规则：</p>
<ul>
<li>父类中声明为 public 的方法在子类中也必须为 public。</li>
<li>父类中声明为 protected 的方法在子类中要么声明为 protected，要么声明为 public，不能声明为 private。</li>
<li>父类中声明为 private 的方法，不能够被继承。</li>
</ul>
<h3 id="非访问修饰符"><a href="#非访问修饰符" class="headerlink" title="非访问修饰符"></a>非访问修饰符</h3><p>为了实现一些其他的功能， java 也提供了许多非访问修饰符。</p>
<ul>
<li><code>static</code> 修饰符</li>
<li><code>final</code> 修饰符</li>
<li><code>abstract</code> 修饰符</li>
<li><code>synchronized</code> 修饰符</li>
<li><code>volatile</code> 修饰符</li>
<li>….</li>
</ul>
<h4 id="static-修饰符"><a href="#static-修饰符" class="headerlink" title="static 修饰符"></a><code>static</code> 修饰符</h4><ul>
<li>静态变量：<br>  static 关键字用来声明独立于对象的静态变量，无论一个类实例化多少对象，它的静态变量只有一份拷贝。静态变量也被称为类变量。局部变量不能被声明为 static 变量</li>
<li>静态方法<br>  static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。</li>
</ul>
<h4 id="final-修饰符"><a href="#final-修饰符" class="headerlink" title="final 修饰符"></a>final 修饰符</h4><ul>
<li>final 变量：<br>  变量一旦赋值后，不能被重新赋值。被 final 修饰的实例变量必须显式指定初始值。</li>
<li>final 方法：<br>  类中的 final 方法可以被子类继承，但是不能被子类修改。<br>  声明 final 方法的主要目的是防止该方法的内容被修改。</li>
<li>final 类：<br>  final 类不能被继承，没有类能够继承 final 类的任何特性。</li>
</ul>

  	</div>
	  
	  <div class="article-tags tags">
      
        <a href="/tags/Java/">Java</a>
      
	  </div>
    
		
	
		<div class="art-item-footer">
				
					<span class="art-item-left"><i class="icon icon-chevron-thin-left"></i>prev：<a href="/2019/01/01/Java-局部变量以及它的有效范围/" rel="prev"  title="Java 局部变量以及它的有效范围">
						Java 局部变量以及它的有效范围 
					</a></span>
				
				
					<span class="art-item-right">next：<a href="/2018/10/28/Android-简介/" rel="next"  title="Android 简介">
						Android 简介
					</a><i class="icon icon-chevron-thin-right"></i></span>
				
		</div>
	
	</section>
	
</article>
<script>
	window.subData = {
		title: 'Java 修饰符',
		tools: true
	}
</script>

      </div>
      <aside class='l_side'>
        
  <section class='m_widget links'>
<div class='header'>Links</div>
<div class='content'>
    <ul class="entry">
    
        <li><a class="flat-box" target="_blank" href="https://iiong.com/">
            <div class='name'>淮城一只猫</div>
        </a></li>
    
    </ul>
</div>
</section>

  <section class='m_widget categories'>
<div class='header'>Categories</div>
<div class='content'>
    
    <ul class="entry">
    
        <li><a class="flat-box" href="/categories/Android基础/"><div class='name'>Android基础</div><div class='badget'>1</div></a></li>
    
    </ul>
    
</div>
</section>

  
<div class="m_widget tagcloud">
    <div class="header">Tags</div>
    <div class='content'>
        <a href="/tags/Android/" style="font-size: 14px; color: #808080">Android</a> <a href="/tags/HTML/" style="font-size: 14px; color: #808080">HTML</a> <a href="/tags/Java/" style="font-size: 20px; color: #000">Java</a> <a href="/tags/Python/" style="font-size: 14px; color: #808080">Python</a>
    </div>
</div>



      </aside>
      <script>setLoadingBarProgress(60);</script>
    </div>
  </div>
  <footer id="footer" class="clearfix">

	<div class="social-wrapper">
  	
      
        <a href="https://github.com/stkevintan" class="social github"
          target="_blank" rel="external">
          <span class="icon icon-github"></span>
        </a>
      
        <a href="https://twitter.com/kevinsfork" class="social twitter"
          target="_blank" rel="external">
          <span class="icon icon-twitter"></span>
        </a>
      
        <a href="/atom.xml" class="social rss"
          target="_blank" rel="external">
          <span class="icon icon-rss"></span>
        </a>
      
    
  </div>
  
  <div>Theme <a href='https://github.com/stkevintan/hexo-theme-material-flow' class="codename">MaterialFlow</a> designed by <a href="http://keyin.me/" target="_blank">Kevin Tan</a>.</div>
  
</footer>


  <script>setLoadingBarProgress(80);</script>
  

<script src="//apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script src='//cdn.bootcss.com/node-waves/0.7.5/waves.min.js'></script>
<script src="//cdn.bootcss.com/scrollReveal.js/3.3.2/scrollreveal.min.js"></script>
<script src="/js/jquery.fitvids.js"></script>
<script>
	var GOOGLE_CUSTOM_SEARCH_API_KEY = "";
	var GOOGLE_CUSTOM_SEARCH_ENGINE_ID = "";
	var ALGOLIA_API_KEY = "";
	var ALGOLIA_APP_ID = "";
	var ALGOLIA_INDEX_NAME = "";
  var AZURE_SERVICE_NAME = "";
  var AZURE_INDEX_NAME = "";
  var AZURE_QUERY_KEY = "";
  var BAIDU_API_ID = "";
  var SEARCH_SERVICE = "hexo";
  var ROOT = "/"||"/";
  if(!ROOT.endsWith('/'))ROOT += '/';
</script>
<script src="/js/search.js"></script>
<script src="/js/app.js"></script>


  <script>setLoadingBarProgress(100);</script>
</body>
</html>
